﻿using System.Collections.Generic;

namespace MassiveBattle
{
	// 1.	승패 결과(어디서 보여줄지는 고려 필요)
	// 2.	가한 데미지 총량 / 받은 데미지 총량
	// 3.	전투 지속시간
	// 4.	연합 어시스트 피해량
	public class Report
	{
		private bool battleResult;
		private readonly IList<int> attackPointList;
		private readonly IList<int> damagePointList;
		private float battleTime;

		private Report()
		{
			attackPointList = new List<int> { 0, 0, 0, 0, 0 };
			damagePointList = new List<int> { 0, 0, 0, 0, 0 };

			Clear();
		}

		public static Report Create()
		{
			return new Report();
		}

		public void Clear()
		{
			battleResult = false;

			for (int i = 0; i < 5; i++)
			{
				attackPointList[i] = 0;
				damagePointList[i] = 0;
			}

			battleTime = 0;
		}

		public bool GetBattleResult()
		{
			return battleResult;
		}

		public int GetAttackPoint(int type)
		{
			return attackPointList[type - 1];
		}

		public int GetDamagePoint(int type)
		{
			return damagePointList[type - 1];
		}

		public float GetBattleTime()
		{
			return battleTime;
		}

		public void SetBattleResult(bool isWin)
		{
			battleResult = isWin;
		}

		public void IncreaseAttackPoint(int type, int value)
		{
			attackPointList[type - 1] += value;
		}

		public void IncreaseDamagePoint(int type, int value)
		{
			damagePointList[type - 1] += value;
		}

		public void SetBattleTime(float time)
		{
			this.battleTime = time;
		}

		public override string ToString()
		{
			string text = "전투 결과\n";

			text += string.Format("승리 여부 : {0}\n", battleResult ? "승리" : "패배");
			text += string.Format("플레이 시간 : {0:0.00}초\n", battleTime);

			text += "가한 데미지 합계\n";
			for (int i = 1; i <= 5; i++)
				text += string.Format("\t타입{0} : {1}\n", i, GetAttackPoint(i));

			text += "맞은 데미지 합계\n";
			for (int i = 1; i <= 5; i++)
				text += string.Format("\t타입{0} : {1}\n", i, GetDamagePoint(i));

			return text;
		}
	}
}
